package middleware

import (
	"gin_erik/pkg/utils"
	"github.com/gin-gonic/gin"
	"net/http"
)

// 模拟有效的令牌
const validToken = "valid_token_123"

var (
	ExcludeUrl = []string{
		"/api/users/*",
		".*",
	}
)

// Authentication 前置处理器：身份验证
func Authentication() gin.HandlerFunc {
	return func(c *gin.Context) {
		if utils.Contains(ExcludeUrl, c.Request.URL.Path) {
			return
		}
		// 从请求头中获取令牌
		token := c.GetHeader("Authorization")
		if token == "" {
			token = c.Query("token")
		}
		c.Param("auth")
		if token != validToken {
			// 令牌无效，返回 401 未授权错误
			utils.SendResponse(c, http.StatusUnauthorized, "Unauthorized", nil)
			// 终止请求处理
			c.Abort()
			return
		}
		// 令牌有效，继续处理请求
		c.Next()
	}
}
